package com.hzw.saas.api.product;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hzw.saas.api.product.dto.ItemOrderDto;
import com.hzw.saas.api.product.dto.ItemOrderInfoDto;
import com.hzw.saas.common.config.util.PageParam;

/**
 * <p>
 * 购买订单表 服务类
 * </p>
 *
 * @author zzl
 * @since 2021-01-21
 */
public interface IItemOrderService {

    /**
     * 根据订单id获取订单详情
     *
     * @param orderId 订单ID
     * @return 订单信息
     */
    ItemOrderDto get(String orderId);

    ItemOrderInfoDto getInfo(String orderId);

    /**
     * 根据条件查询订单列表
     *
     * @param pageParam 分页
     * @param cnd       查询条件
     * @return 订单列表
     */
    IPage<ItemOrderDto> list(PageParam pageParam, ItemOrderDto cnd);

    IPage<ItemOrderInfoDto> listInfo(PageParam pageParam, ItemOrderDto cnd);

    /**
     * 创建订单
     *
     * @param itemOrderDto 订单信息，包含用户ID
     * @return 订单信息，包含生成的订单ID
     */
    ItemOrderDto add(ItemOrderDto itemOrderDto);

    /**
     * 更新订单信息
     *
     * @param itemOrderDto 待更新的订单信息，无需更新的字段设为null
     * @return 更新成功true/失败false
     */
    boolean update(ItemOrderDto itemOrderDto);

//    /**
//     *  创建购买机时产品线下订单
//     * @param itemOrderDto
//     * @return
//     */
//    ItemOrderDto createOfflineItemOrder(ItemOrderDto itemOrderDto);

//    /**
//     * 购买订单确认
//     * @param orderId
//     * @return 确认订单状态
//     */
//    void orderItemConfirm(String orderId, String userId) throws Exception;

}
